Memory devices are typically provided as internal, semiconductor, integrated circuits in computers or other electronic systems. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), resistive random access memory (RRAM), double data rate memory (DDR), low power double data rate memory (LPDDR), phase change memory (PCM) and Flash memory.
Non-volatile memory is memory that can retain its stored data for some extended period without the application of power. Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices are commonly used in electronic systems, such as personal computers, personal digital assistants (PDAs), digital cameras, digital media players, digital recorders, games, appliances, vehicles, wireless devices, cellular telephones, and removable memory modules, and the uses for Flash memory continue to expand.
Memory devices typically perform memory operations such as reading, writing and erasing operations. These operations are sometimes referred to as foreground operations as these operations are sometimes initiated by a memory access device, such as a host, or other memory device controlling circuitry coupled to the memory device. Additional operations include what are sometimes referred to as background operations. These operations are sometimes initiated by controlling circuitry in a memory device itself. Wear-leveling in memory devices might be performed as a background operation, for example.
Recognizing that errors might occur in reading of data from the memory device, one or more types of error correction methods might be employed. Error Correction Schemes, commonly referred to as error correction codes (ECC), can be implemented in order to detect and attempt to correct these errors. Various ECCs comprise codes in which each data signal subjected to the ECC should conform to the specific rules of construction of the ECC. Departures from this construction of data (i.e., errors) that are not too great can generally be automatically detected and sometimes corrected. Examples of ECCs include Hamming code, BCH code, Reed-Solomon code, Reed-Muller code, Binary Golay code, Low-Density Parity Code, and Trellis Code modulation. Some ECCs can correct single-bit errors and detect double-bit errors. Other ECCs can detect and/or correct multi-bit errors, for example.
Typically, a memory device will store data (e.g., user data) at a first location in memory and associated error correction code (ECC) data at a second memory location in the memory device. During a read operation, the stored user data and the ECC data are read from the memory array in response to a read request of the user data. Using known algorithms, the user data returned from the read operation is compared to the ECC data. If errors are detected and those errors are within the limits of the ECC, e.g., sufficient ECC resolution exists in the stored ECC data, the errors may be corrected. Such use of ECC for the detection and correction of bit errors is well understood in the art.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for relieving hosts from performing ECC operations in systems having memory devices.